package com.example.lancooznbk.service;

import com.example.lancooznbk.model.result.BaseReviewItemEntity;
import com.example.lancooznbk.model.result.BaseReviewWrongEntity;
import znbkListSc.entity.CollectionListEntity;
import com.example.lancooznbk.model.result.DifficultReviewEntity;
import com.example.lancooznbk.model.result.FavouriteListEntity;
import znbkListRdtz.entity.HeatPointExtensionListEntity;
import com.example.lancooznbk.model.result.LearnTypeEntity;
import znbkListBj.entity.NoteListEntity;
import com.example.lancooznbk.model.result.RecentStudyItemEntity;
import com.example.lancooznbk.model.result.ReviewProgressEntity;
import com.example.lancooznbk.model.result.ServerAddressEntityXml;
import znbkListXtfx.entity.SystemReviewListEntity;
import com.example.lancooznbk.model.result.TemplateEntity;
import znbkListNtxl.entity.TrainingDifficultProblemsListEntity;
import znbkListRdqh.entity.WeekAscensionListEntity;
import znbkListCtfd.entity.WrongTopicTutoringListEntity;

import java.util.List;

import znbkTestPaperBj.entity.NotePaperEntity;
import znbkTestPaperLstjt.entity.HistoryRecommendQuesPaperEntity;
import znbkTestPaperRdqh.entity.WeekAscensionPaperEntity;
import znbkTestPaperRdtz.entity.HeatPointExtensionPaperEntity;
import znbkTestPaperSc.entity.CollectionPaperEntity;
import znbkTestPaperXtfx.entity.SystemReviewPaperEntity;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Query;
import rx.Observable;
import znbkTestPaperNtxl.entity.TrainingDifficultProblemsPaperEntity;
import znbkTestPaperXtfx.getDiagnosticReportInfo.GetDiagnosticReportEntity;

import static com.lancoo.rxretrofitlibrary.http.RetrofitUrlManager.DOMAIN_NAME_HEADER;
import static com.lancoo.rxretrofitlibrary.http.RetrofitUrlManager.SERVER_ADDRESS_NAME;

/**
 * Created by tangminglong on 17/7/26.
 * api 访问接口的集合
 */

public interface HttpGetServer {

    @Headers({DOMAIN_NAME_HEADER + SERVER_ADDRESS_NAME})
    @GET("/SearchStatisticalInfo.asmx/WS_Search_GetServerAddressConf?serverID=")
    Observable<ServerAddressEntityXml> getServerAddress();

    @GET("api/ZNBK/W_ZNBK_GetPaperList")
    Observable<BaseReviewItemEntity> getBaseReviewItem1(
            @Query("stuId") String studId,@Query("stuName") String stuName,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") String paperFrom,
            @Query("State") int State,@Query("pageNumber") int pageNumber,
            @Query("pageSize") int pageSize) ;

    //http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetHardQueList?
    @GET("api/ZNBK/W_ZNBK_GetHardQueList")
    Observable<DifficultReviewEntity> getImpAndDifTutorItem1(
            @Query("stuId") String stuId,@Query("stuName") String stuName,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("queType") String queType, @Query("State") int State,
            @Query("pageNumber") int pageNumber, @Query("pageSize") int pageSize);

    @GET("api/ZNBK/W_ZNBK_GetWrongQueList")
    Observable<BaseReviewWrongEntity> getBaseReviewWrongItem(@Query("stuId") String stuId,@Query("subjectId") String subjectId,
                                                             @Query("stageNo") String stageNo,@Query("queType") String queType,
                                                             @Query("quesFrom") int quesFrom,@Query("state") int state,
                                                             @Query("pageNumber") int pageNumber,@Query("pageSize") int pageSize);


    @GET("api/ZNBK/W_ZNBK_GetPaperTemplet")
    Observable<List<TemplateEntity>> getReviewTemplate(@Query("StuID") String stuId, @Query("SubjectID") String subjectId,
                                                 @Query("StageNo") String stagNo);


    /**
     * 获取试题收藏转态信息
     * @param stuId
     * @param subjectId
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetFavouriteList")
    Observable<FavouriteListEntity> getFavouriteList(@Query("stuId") String stuId, @Query("subjectId") String subjectId,
                                                     @Query("stageNo") String stageNo,@Query("typeId") String typeId,
                                                     @Query("quesBrief") String quesBrief,@Query("pageNumber") int pageNumber,@Query("pageSize") int pageSize);

    /**
     * 获取复习进度
     * @param subjectId
     * @param stuId
     * @param flag
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetProgressDetail")
    Observable<ReviewProgressEntity> getProgressDetail(@Query("subjectId") String subjectId, @Query("stuId") String stuId,
                                                       @Query("flag") String flag);

    /**
     * 获取所有支持的题型
     * @param *subjectId 学科ID
     * @param *stagNo 学习阶段ID
     * @return
     */
    @GET("api/ZNBK/W_ZNBK_GetAllQueType")
    Observable<List<LearnTypeEntity>> getAllLearnType(@Query("subjectId") String subjectId, @Query("stageNo") String stageNo);


    /************************************************************************************************
     * ***************************分界线**************************************************************
     * *************************************************************************************************/

    /*
    * 获取系统复习,弱点提升列表数据
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPaperInfo?stuId=zxstu8&subjectId=C&stageNo=C&paperFrom=1&answerState=0&pageIndex=1&pageSize=5
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPaperInfo?stuId=zxstu8&subjectId=C&stageNo=C&paperFrom=1&answerState=1&pageIndex=1&pageSize=5
    * */
    @GET("api/ZNBK/W_ZNBK_GetPaperInfo")
    Observable<SystemReviewListEntity> getSystemReviewListEntity(
            @Query("stuId") String studId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") String paperFrom,
            @Query("answerState") int answerState,@Query("pageIndex") int pageIndex,
            @Query("pageSize") int pageSize) ;
    @GET("api/ZNBK/W_ZNBK_GetPaperInfo")
    Observable<WeekAscensionListEntity> getWeekAscensionItem(
            @Query("stuId") String studId,@Query("subjectId") String subjectId,
            @Query("stageNo") String stageNo,@Query("paperFrom") String paperFrom,
            @Query("answerState") int answerState,@Query("pageIndex") int pageIndex,
            @Query("pageSize") int pageSize) ;

    /*
    * 获取系统复习，,弱点提升试卷详细信息
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPaperItemInfo?stuId=zxstu8&paperId=P20181191336311230&isRepleace=true
    * */

//    @GET("api/ZNBK/W_ZNBK_GetPaperItemInfo")
//    Observable<WeekAscensionJson> getWeekAscensionJson(
//            @Query("stuId") String studId,@Query("paperId") String paperId,
//            @Query("isRepleace") boolean isRepleace) ;


    /*
    *  获取系统复习，,弱点提升试卷详细信息(new):合并了作答答案和试题信息
    *   http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPaperDetailInfo?stuId=zxstu28&paperId=P2018291138492850&isRepleace=true
    * */
    @GET("api/ZNBK/W_ZNBK_GetPaperDetailInfo")
    Observable<SystemReviewPaperEntity> getSystemReviewPaperEntity(
            @Query("stuId") String studId,@Query("paperId") String paperId,
            @Query("isRepleace") boolean isRepleace) ;
    @GET("api/ZNBK/W_ZNBK_GetPaperDetailInfo")
    Observable<WeekAscensionPaperEntity> getWeekAscensionPaperEntity(
            @Query("stuId") String studId,@Query("paperId") String paperId,
            @Query("isRepleace") boolean isRepleace) ;


    /*
    * 获取难题训练列表数据
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetHardQueList?StuID=zxstu8&SubjectID=C&StageNo=C&QueType=&AnswerState=0&PageNumber=1&PageSize=3
    * */
    @GET("api/ZNBK/W_ZNBK_GetHardQueList")
    Observable<TrainingDifficultProblemsListEntity> getTrainingDifficultProblemsItem(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("QueType") String QueType, @Query("AnswerState") int AnswerState,
            @Query("PageNumber") int PageNumber, @Query("PageSize") int PageSize);

    /*
    * 获取错题辅导列表数据
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetWrongQueList?StuID=zxstu8&SubjectID=C&StageNo=C&QueType=&AnswerState=0&PageNumber=1&PageSize=1
    * */
    @GET("api/ZNBK/W_ZNBK_GetWrongQueList")
    Observable<WrongTopicTutoringListEntity> getWrongTopicTutoringItem(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("QueType") String QueType, @Query("AnswerState") int AnswerState,
            @Query("PageNumber") int PageNumber, @Query("PageSize") int PageSize);


    /*
    * 获取热点拓展列表数据
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetResourceList?StuID=basestu20&SubjectID=C&StageNo=C&ResType=5&State=-1&DateFlag=1&IndexFlag=1&PageNumber=1&PageSize=10
    * */
    @GET("api/ZNBK/W_ZNBK_GetResourceList")
    Observable<HeatPointExtensionListEntity> getHeatPointExtensionItem(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("ResType") String ResType,
            @Query("State") int State, @Query("DateFlag") int DateFlag,@Query("IndexFlag") int IndexFlag,
            @Query("PageNumber") int PageNumber, @Query("PageSize") int PageSize);

    /*
    * 获取热点拓展资源详细内容
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetSingleResource?ResID=CCAE16122CIA50000ud&StuID=zxstu2&
    * SubjectID=C&StageNo=C&Flag=1&isReplace=true
    * */
    @GET("api/ZNBK/W_ZNBK_GetSingleResource")
    Observable<HeatPointExtensionPaperEntity> getHeatPointExtensionPaperEntity(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("ResID") String ResID,
            @Query("Flag") int Flag, @Query("isReplace") boolean isReplace);


    /*
     * 获取最近学习列表数据
     *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetFirstPageInfo?StuID=basestu20&SubjectID=C&StageNo=C&IsRun=1&MonthCount=5&WeekCount=7
     * */
    @GET("api/ZNBK/W_ZNBK_GetFirstPageInfo")
    Observable<RecentStudyItemEntity> getRecentStudyItem(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("GlobalGrade") String GlobalGrade,@Query("IsRun") String IsRun,
            @Query("MonthCount") int MonthCount, @Query("WeekCount") int WeekCount,
            @Query("SchoolID") String SchoolID);


    /*
    * 获取难题训练试题详细信息
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetHardQues?StuID=LgStudent&SubjectID=C&StageNo=C&QuesID=CCAC04012DHA108007W&AnswerState=0&ItemFrom=4
    * */
    @GET("api/ZNBK/W_ZNBK_GetHardQues")
    Observable<TrainingDifficultProblemsPaperEntity> getTrainingDifficultProblemsJson(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("QuesID") String QuesID,
            @Query("AnswerState") int AnswerState, @Query("ItemFrom") int ItemFrom);


    /*
    * 获取收藏列表数据
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetFavouriteList?StuID=zxstu28&SubjectID=C&StageNo=C&ResType=&PageNumber=1&PageSize=10&SearchInfo=
    * */
    @GET("api/ZNBK/W_ZNBK_GetFavouriteList")
    Observable<CollectionListEntity> getCollectionEntity(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("ResType") String ResType,
            @Query("PageNumber") int PageNumber, @Query("PageSize") int PageSize,
            @Query("SearchInfo") String SearchInfo);


    /*
    * 获取收藏资源详情
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPersonalFavourite?StuID=zxstu28&SubjectID=C&
    * StageNo=C&ResID=CCAC04012DHA108009r&Flag=0&IsReplace=false
    * */
    @GET("api/ZNBK/W_ZNBK_GetPersonalFavourite")
    Observable<CollectionPaperEntity> getCollectionPaperEntity(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("ResID") String ResID,
            @Query("Flag") int Flag, @Query("IsReplace") boolean IsReplace);



    /*
    * 获取笔记列表数据
    *http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPersonalNoteList?PageNumber=1&PageSize=10&StuID=zxstu2&SubjectID=C&StageNo=C&SearchInfo=&QuesID=
    **/

    @GET("api/ZNBK/W_ZNBK_GetPersonalNoteList")
    Observable<NoteListEntity> getNotesListEntity(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,
            @Query("PageNumber") int PageNumber, @Query("PageSize") int PageSize,
            @Query("SearchInfo") String SearchInfo,@Query("QuesID") String QuesID);

    /*
    * 获取单道试题对应的笔记详情
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetPersonalNote?StuID=zxstu28&SubjectID=C&StageNo=C&QuesID=CCAC04012DHA108007W&IsReplace=true&Flag=0
    * */
    @GET("api/ZNBK/W_ZNBK_GetPersonalNote")
    Observable<NotePaperEntity> getNotePaperEntity(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("QuesID") String QuesID,
            @Query("IsReplace") boolean IsReplace, @Query("Flag") int Flag);

    /*
    * 获取诊断报告
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetDiagnosticReportInfo?stuId=zxstu8&paperId=P20181191336311230
    * */
    @GET("api/ZNBK/W_ZNBK_GetPersonalNote")
    Observable<GetDiagnosticReportEntity> getDiagnosticReportInfo(
            @Query("stuId") String stuId,@Query("paperId") String paperId);

    /*
    * 获取某道题的历史推荐题
    * http://172.16.41.235:2018/api/ZNBK/W_ZNBK_GetLSRecQues?StuID=zxstu78&SubjectID=C&StageNo=C&QuesID=CCAE18144DHE10U00RP
    * */
    @GET("api/ZNBK/W_ZNBK_GetLSRecQues")
    Observable<List<HistoryRecommendQuesPaperEntity>> getLSRecQues(
            @Query("StuID") String StuID,@Query("SubjectID") String SubjectID,
            @Query("StageNo") String StageNo,@Query("QuesID") String QuesID);

}
